package com.senlingspace.payment.douyin.bean.request;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Strings;
import com.senlingspace.payment.douyin.DouyinFunctionEnum;
import com.senlingspace.payment.douyin.bean.response.DouyinGoodsTemplateResponse;
import lombok.Data;

/**
 * 查询商品模板
 *
 * @author lebronjames
 * @date 2024/08/15
 */
@Data
public class DouyinGoodsTemplateRequest implements DouyinRequest<DouyinGoodsTemplateResponse> {

    /**
     * 商品类型
     * <p>
     * 1 = 团购套餐
     * 2 = 虚拟商品
     * 3 = 预售券
     * 4 = 民宿
     * 5 = 门票
     * 6 = 外卖
     * 7 = 旅行跟拍
     * 8 = 一日游
     * 9 = 售卖的房子
     * 10 = 懂车帝
     * 11 = 代金券
     * 12 = 预售v2
     * 13 = 预定
     * 14 = 配送商品
     * 15 = 次卡
     * 16 = 外卖（目前商品专项服务商用）
     * 17 = 外卖聚合品（目前商品专项服务商用，只用于MSPU）
     * 18 = 通兑权益
     * 19 = 外卖预售券
     * 20 = 线索类
     * 21 = 附属商品
     * 22 = 预约商品 多sku
     * 23 = 即时零售 多sku
     * 24 = 接待单元
     * 25 = 线索收集
     * 26 = 营销资产
     * 27 = 聚合品
     * 必传
     */
    @JsonProperty("product_type")
    private String productType;

    /**
     * 商品子类型
     * <p>
     * 非必传
     */
    @JsonProperty("product_sub_type")
    private String productSubType;

    /**
     * 三级品类id
     * <p>
     * 必传
     */
    @JsonProperty("category_id")
    private String categoryId;

    @Override
    public DouyinFunctionEnum getFunction() {
        return DouyinFunctionEnum.goods_template_get;
    }

    @Override
    public String getBody() {
        return "product_type=" + this.productType + "&category_id=" + this.categoryId + "&product_sub_type=" + (Strings.isNullOrEmpty(this.productSubType) ? "" : this.productSubType);
    }

    @Override
    public Class<DouyinGoodsTemplateResponse> getResponseType() {
        return DouyinGoodsTemplateResponse.class;
    }
}
